# 文件名: lambda_examples.py
# 说明: Python lambda 匿名函数示例合集

print("\n--- 示例1: 基础 lambda 语法 ---")
# lambda 语法: lambda 参数: 表达式
add = lambda x, y: x + y  # 定义匿名函数
print("3 + 5 =", add(3, 5))  # 输出 8


print("\n--- 示例2: 结合高阶函数使用 ---")
# 配合 map() 函数操作列表
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers))
print("平方结果:", squared)  # [1, 4, 9, 16]

# 配合 filter() 函数筛选数据
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print("偶数筛选:", even_numbers)  # [2, 4]


print("\n--- 示例3: 作为排序的 key 函数 ---")
students = [
    {"name": "Alice", "age": 25},
    {"name": "Bob", "age": 20},
    {"name": "Charlie", "age": 22}
]

# 按年龄排序
sorted_by_age = sorted(students, key=lambda s: s["age"])
print("按年龄排序:", [s["name"] for s in sorted_by_age])  # ['Bob', 'Charlie', 'Alice']


print("\n--- 示例4: 在事件处理中使用 ---")
# 模拟 GUI 按钮点击回调（需 tkinter 库支持）
import tkinter as tk

root = tk.Tk()
button = tk.Button(root, text="点击", command=lambda: print("按钮被点击了!"))
button.pack()
# root.mainloop()  # 实际运行时需要取消注释


print("\n--- 示例5: 立即执行 lambda ---")
# 定义后立即调用（语法：(lambda)(参数)）
print("立即计算结果:", (lambda a, b: a * b)(4, 5))  # 20


print("\n--- 示例6: 多条件逻辑 ---")
# 使用三元表达式处理复杂逻辑
grade_eval = lambda score: "及格" if score >= 60 else "不及格"
print("分数 75:", grade_eval(75))  # 及格
print("分数 55:", grade_eval(55))  # 不及格


print("\n--- 示例7: 嵌套 lambda ---")
# 返回 lambda 的函数工厂
make_multiplier = lambda n: lambda x: x * n
times3 = make_multiplier(3)
print("5 x 3 =", times3(5))  # 15


print("\n--- 关键点总结 ---")
print("1. 语法结构: lambda 参数: 表达式")
print("2. 使用场景: 简单函数、一次性操作、高阶函数参数")
print("3. 优点: 代码简洁，无需定义函数名")
print("4. 限制: 只能包含单个表达式，无语句（如 if-elif-else 需用三元表达式）")
print("5. 替代方案: 复杂逻辑建议使用 def 定义常规函数")